/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package sample.guice.client;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

/**
 * 
 * @author David Castañón (dcastannon)
 *
 */
public class GuiceSampleClient {

    public static void main(String[] args1) throws AxisFault {

	RPCServiceClient serviceClient = new RPCServiceClient();

	Options options = serviceClient.getOptions();

	EndpointReference targetEPR = new EndpointReference(
		"http://localhost:8080/axis2/services/GuiceSampleService");

	options.setTo(targetEPR);

	// Setting the
	QName opSet = new QName("http://service.guice.sample", "put");

	Object[] opSetArgs = new Object[] { "key", "value" };

	serviceClient.invokeRobust(opSet, opSetArgs);

	// Getting the
	QName opGet = new QName("http://service.guice.sample", "get");

	Object[] opGetArgs = new Object[] { "key" };
	Class<?>[] returnTypes = new Class[] { String.class };

	Object[] response = serviceClient.invokeBlocking(opGet, opGetArgs,
		returnTypes);

	String result = (String) response[0];

	System.out.println("Result: " + result);

    }
}
